1 package uba.db.sql.language;
2
3 import org.apache.commons.lang.builder.EqualsBuilder;
4 import org.apache.commons.lang.builder.HashCodeBuilder;
5
6 /***
7 * Un origen de selección que hace referencia a una tabla.
8 *
9 * @see uba.db.sql.language.Select
10 *
11 * @version $Revision: 1.3 $
12 */
13 public class TableSelectionSource implements SelectionSource {
14 private TableName tableName;
15
16 /***
17 * Este constructor es equivalente a: <i>TableSelectionSource(new
18 * TableName(tableName))</i>
19 *
20 * @see #TableSelectionSource(TableName)
21 */
22 public TableSelectionSource(String tableName) {
23 this(new TableName(tableName));
24 }
25
26 /***
27 * Crea una instancia que equivale a la expresion:
28 * <code>.. FROM <b>tableName</b></code> de un <i>SELECT</i>.
29 *
30 * @param tableName
31 * nombre de la tabla
32 */
33 public TableSelectionSource(TableName tableName) {
34 this.tableName = tableName;
35 }
36
37 /***
38 * @see java.lang.Object#hashCode()
39 */
40 public int hashCode() {
41 return HashCodeBuilder.reflectionHashCode(this);
42 }
43
44 /***
45 * @see java.lang.Object#equals(java.lang.Object)
46 */
47 public boolean equals(Object obj) {
48 return EqualsBuilder.reflectionEquals(this, obj);
49 }
50
51 /***
52 * @see java.lang.Object#toString()
53 */
54 public String toString() {
55 return tableName.toString();
56 }
57
58 /***
59 * @see uba.db.sql.language.Visitable#accept(uba.db.sql.language.Visitor)
60 */
61 public void accept(Visitor visitor) {
62 visitor.visitTableSelectionSource(this);
63 }
64
65 /***
66 * Retorna un {@link Join} creado a partir del receptor y <i>b</i>
67 *
68 * @param otherSelectionSource
69 * otherSelectionSource
70 */
71 public Join join(SelectionSource otherSelectionSource) {
72 return new Join(this, otherSelectionSource);
73 }
74
75 public TableName tableName() {
76 return tableName;
77 }
78 }